function [] = calcEstimations()
    %% initialization:
    iNElem = 18; % number of elements in the array ...
    iSize = ceil(iNElem/2);
    
    dRho = 0.0; % traffic intensity value ...
    Lt = 0.0; % theoretical length ...
    a_L = zeros(1, iSize); % array for all mean length ...
    a_Lt = zeros(1, iSize); % array for theoretical queue length (L) ...
    a_rho = zeros(1, iSize);
    
    a_means = zeros(1, iNElem);
    for i=1:2:length(a_means)
        a_means(i) = 1.0; % mean of arrival time (lambda) ...
        a_means(i+1) = (i+1)/(iNElem+2); % mean of service time (mu) ...
    end
        
    meanVals = zeros(1, 2);
    
    %% simulation:
    % calculate the estimations of the temporal mean of the clients in a system ...
    iCount = 1;
    for i=1:2:iNElem
        fprintf('\nit_nr: %d\n\n', iCount);
        
        meanVals(1) = a_means(i);
        meanVals(2) = a_means(i+1);
        [dR, dRelError, mean_L] = mm1(meanVals);
        dRho = dR; % temp. backup ...
        
%        fprintf('\nmean of arrival time (lambda): %f\n', meanVals(1));
%        fprintf('mean of service time (mu): %f\n', meanVals(2));
%        fprintf('traffic intesity (rho): %f\n', dRho);
%        fprintf('mean queue length: %f\n', mean_L);

        % add the empirc mean value to the array ...
        a_L(iCount) = mean_L;
%         iIdx = length(dRelError);
%         plot(1:iIdx, dRelError);
        a_rho(iCount) = dRho;
        
        % calculate the theoretic mean time of arrivals ...
%         f_lambda = 1.0/meanVals(1);
%         f_mu = 1.0/meanVals(2);
%         dW = 1.0/(f_mu - f_lambda);
%         a_Lt(iCount) = f_lambda*dW;
        Lt = dRho/(1.0 - dRho);
        a_Lt(iCount) = Lt;
        
        % count up ...
        iCount = iCount + 1;
    end
    
    % verify the length of the arrays with the count number ...
    if(length(a_L) > iCount)
        % cut all arrays at the count position ...
        a_L = a_L(1:iCount);
        a_Lt = a_Lt(1:iCount);
        a_rho = a_rho(1:iCount);
    end

    % plot the theoretical and the empiric vallue of L (length of the queue + 1) ... 
    cGrey = [0.4, 0.4, 0.4];
    cDarkGrey = [0.2, 0.2, 0.2];
    iStdSize = 12;
    %iTitSize = 14;

    figure(1);
    clf;

    hold on;
    g = plot(a_rho, a_L, '--'); % empiric values ...
    f = plot(a_rho, a_Lt, '-'); % theoretic values ...
    
    set(f, 'LineWidth', 1, 'Color', cDarkGrey);
    set(g, 'LineWidth', 1, 'Color', cGrey);
    
    l = legend( [f g], '\it valor teorico', '\it valor empirico' );
    set( l, 'Interpreter', 'tex', 'Location', 'NorthWest', ...
            'FontName', 'Times', 'FontSize', 9 );

    xlbl = xlabel( 'intensidad de trafico \it{\rho}' );
    ylbl = ylabel( 'promedio temporal de clientes en el sistema \it{L}' );
    set(xlbl, 'Interpreter', 'tex', 'FontName', 'Times', 'FontSize', iStdSize);
    set(ylbl, 'Interpreter', 'tex', 'FontName', 'Times', 'FontSize', iStdSize);
    %title(' ', 'FontName', 'Times', 'FontSize', iTitSize);
    
    axis square;    
    grid on;
    hold off;

    % print the theoretic and the empiric values in one list ...
    fprintf('\n\nvalues:\n');
    fprintf('rho,\t\ttheoretic,\tempiric\n');
    for i=1:length(a_Lt)
        fprintf('%f,\t%f,\t%f\n', a_rho(i), a_Lt(i), a_L(i));
    end
end

%% result (output):
%
% iNElem = 18, iMaxSize = 1500 --> parte_a_max1500_nEl_18.eps
% 
% it_nr: 1
% 
% 
% total steps: 1500
% 
% it_nr: 2
% 
% 
% total steps: 1500
% 
% it_nr: 3
% 
% 
% total steps: 1500
% 
% it_nr: 4
% 
% 
% total steps: 4
% 
% it_nr: 5
% 
% 
% total steps: 1500
% 
% it_nr: 6
% 
% 
% total steps: 1500
% 
% it_nr: 7
% 
% 
% total steps: 1500
% 
% it_nr: 8
% 
% 
% total steps: 1500
% 
% it_nr: 9
% 
% 
% total steps: 3
% 
% 
% values:
% rho,		theoretic,	empiric
% 0.100000,	0.111111,	0.111457
% 0.200000,	0.250000,	0.250397
% 0.300000,	0.428571,	0.426988
% 0.400000,	0.666667,	0.694358
% 0.500000,	1.000000,	0.995863
% 0.600000,	1.500000,	1.496847
% 0.700000,	2.333333,	2.189743
% 0.800000,	4.000000,	3.284971
% 0.900000,	9.000000,	5.501624
